home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / gas_251.zip / bin_251 / ld / ld.h < prev    next >
C/C++ Source or Header  |  1994-09-20  |  3KB  |  115 lines

  1. /* ld.h -
  2.  
  3.    Copyright (C) 1991, 1993 Free Software Foundation, Inc.
  4.  
  5.    This file is part of GLD, the Gnu Linker.
  6.  
  7.    GLD is free software; you can redistribute it and/or modify
  8.    it under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 2, or (at your option)
  10.    any later version.
  11.  
  12.    GLD is distributed in the hope that it will be useful,
  13.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.    GNU General Public License for more details.
  16.  
  17.    You should have received a copy of the GNU General Public License
  18.    along with GLD; see the file COPYING.  If not, write to
  19.    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21. #ifndef LD_H
  22. #define LD_H
  23.  
  24. /* Extra information we hold on sections */
  25. typedef struct  user_section_struct
  26. {
  27.   /* Pointer to the section where this data will go */
  28.   struct lang_input_statement_struct *file;
  29. } section_userdata_type;
  30.  
  31.  
  32. #define get_userdata(x) ((x)->userdata)
  33.  
  34. #define BYTE_SIZE    (1)
  35. #define SHORT_SIZE    (2)
  36. #define LONG_SIZE    (4)
  37. #define QUAD_SIZE    (8)
  38.  
  39. /* ALIGN macro changed to ALIGN_N to avoid    */
  40. /* conflict in /usr/include/machine/machparam.h */
  41. /* WARNING: If THIS is a 64 bit address and BOUNDARY is a 32 bit int,
  42.    you must coerce boundary to the same type as THIS.
  43.    ??? Is there a portable way to avoid this.  */
  44. #define ALIGN_N(this, boundary) \
  45.   ((( (this) + ((boundary) -1)) & (~((boundary)-1))))
  46.  
  47. typedef struct
  48. {
  49.   /* 1 => assign space to common symbols even if `relocatable_output'.  */
  50.   boolean force_common_definition;
  51.   boolean relax;
  52.  
  53.   /* Name of runtime interpreter to invoke.  */
  54.   char *interpreter;
  55.  
  56.   /* Name to give runtime libary from the -soname argument.  */
  57.   char *soname;
  58.  
  59.   /* Runtime library search path from the -rpath argument.  */
  60.   char *rpath;
  61.  
  62.   /* Big or little endian as set on command line.  */
  63.   enum { ENDIAN_UNSET = 0, ENDIAN_BIG, ENDIAN_LITTLE } endian;
  64. } args_type;
  65.  
  66. extern args_type command_line;
  67.  
  68. typedef int token_code_type;
  69.  
  70. typedef struct 
  71. {
  72.   bfd_size_type specified_data_size;
  73.   boolean magic_demand_paged;
  74.   boolean make_executable;
  75.  
  76.   /* If true, request BFD to use the traditional format.  */
  77.   boolean traditional_format;
  78.  
  79.   /* If true, doing a dynamic link.  */
  80.   boolean dynamic_link;
  81.  
  82.   boolean build_constructors;
  83.  
  84.   /* If true, warn about merging common symbols with others.  */
  85.   boolean warn_common;
  86.  
  87.   /* If true, only warn once about a particular undefined symbol.  */
  88.   boolean warn_once;
  89.  
  90.   boolean sort_common;
  91.  
  92.   boolean text_read_only;
  93.  
  94.   char *map_filename;
  95.   FILE *map_file;
  96.  
  97.   boolean stats;
  98. } ld_config_type;
  99.  
  100. extern ld_config_type config;
  101.  
  102. typedef enum
  103. {
  104.   lang_first_phase_enum,
  105.   lang_allocating_phase_enum,
  106.   lang_final_phase_enum
  107. } lang_phase_type;
  108.  
  109. extern boolean had_script;
  110. extern boolean force_make_executable;
  111.  
  112. extern int yyparse PARAMS ((void));
  113.  
  114. #endif
  115.